<?php

/*
* kafka服务配置
*/

return [
    'default' => [
        // 连接超时时间
        'connect_timeout' => -1,
        // 发送超时时间
        'send_timeout' => -1,
        // 接收超时时间
        'recv_timeout' => -1,
        // Kafka 客户端标识，不同的消费者进程请使用不同的设置
        'client_id' => '',
        // 最大写入尝试次数
        'max_write_attempts' => 3,
        // 别名 broker，格式：'127.0.0.1:9092,127.0.0.1:9093' 或 ['127.0.0.1:9092','127.0.0.1:9093']
        'brokers' => '127.0.0.1:9092',
        // 别名bootstrapServer，引导服务器，如果配置了该值，会自动连接该服务器，并自动更新 brokers。格式：'127.0.0.1:9092,127.0.0.1:9093' 或 ['127.0.0.1:9092','127.0.0.1:9093']
        'bootstrap_servers' => '127.0.0.1:9092',
        // 是否自动更新 brokers
        'update_brokers' => true,
        // 生产者要求领导者，在确认请求完成之前已收到的确认数值。允许的值：0表示无确认，1表示仅领导者，-1表示完整的ISR。
        'acks' => 0,
        // 生产者 ID
        'producer_id' => -1,
        // 生产者 Epoch	
        'producer_epoch' => -1,
        // 分区 Leader Epoch	
        'partition_leader_epoch' => -1,
        // 别名 broker，格式：'127.0.0.1:9092,127.0.0.1:9093' 或 ['127.0.0.1:9092','127.0.0.1:9093']
        'broker' => '',
        // 未获取消息到消息时，延迟多少秒再次尝试，默认为0则不延迟（单位：秒，支持小数）
        'interval' => 0,
        // 如果超时后没有收到心跳信号，则协调器会认为该用户死亡。（单位：秒，支持小数）
        'session_timeout' => 60,
        // 重新平衡组时，协调器等待每个成员重新加入的最长时间（单位：秒，支持小数）。
        'rebalance_timeout' => 60,
        // 副本 ID	
        'replica_id' => -1,
        // 机架编号	
        'rack_id' => '',
        // 分组操作，匹配预设的错误码时，自动重试次数
        'group_retry' => 5,
        // 分组操作重试延迟，单位：秒
        'group_retry_sleep' => 1,
        // 分组心跳时间间隔，单位：秒
        'group_heartbeat' => 3,
        // 偏移量操作，匹配预设的错误码时，自动重试次数
        'offset_retry' => 5,
        // 自动创建主题
        'auto_create_topic' => true,
        // 消费者分区分配策略，可选：
        // 范围分配-\houze\kafka\Consumer\Assignor\RangeAssignor
        // 轮询分配-\houze\kafka\Consumer\Assignor\RoundRobinAssignor
        // 粘性分配-\houze\kafka\Consumer\Assignor\StickyAssignor
        'partition_assignment_strategy' => new \houze\kafka\Consumer\Assignor\RoundRobinAssignor(),
        // SASL身份认证信息。为空则不发送身份认证信息
        'sasl' => [],
        // SSL链接相关信息,为空则不使用SSL
        'ssl' => null,
        // 连接池配置
        'pool' => [
            // 最小连接数
            'min_connections' => 1,
            // 最大连接数
            'max_connections' => 10,
            // 连接超时时间
            'connect_timeout' => 10.0,
            // 等待超时时间
            'wait_timeout' => 3.0,
            // 心跳
            'heartbeat' => -1,
            // 最大进程时间
            'max_idle_time' => 60.0,
        ],
    ],
];